package com.atguigu.graph;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;

class MySets{
    public HashMap<Node, List<Node>> setMap;
    public MySets(List<Node> nodes){
        for(Node cur:nodes){
            List<Node> set=new ArrayList<>();
            set.add(cur);
            setMap.put(cur,set);
        }
    }
    public boolean isSameSet(Node from,Node to){
        List<Node> fromSet=setMap.get(from);
        List<Node> toSet=setMap.get(to);
        return fromSet==toSet;
    }
    public void union(Node from,Node to){
        List<Node> fromSet=setMap.get(from);
        List<Node> toSet=setMap.get(to);
        for(Node toNode:toSet){
            fromSet.add(toNode);
            setMap.put(toNode,fromSet);
        }
    }
}
class EdgeComparator implements Comparable{
    @Override
    public int compareTo(Object o) {
        return 0;
    }
}
class UnionFind{
}
public class Kruskal {
    public static Set<Edge> kruskalMST(Graph graph){
        //UnionFind unionFind=new UninoFind();
        //unionFind.makeSets(graph.nodes.values());
        //PriorityQueue<Edge> priorityQueue=new PriorityQueue<>(new EdgeComparator());
//            for(Edge edge:graph.edges){ //M条边
//                priorityQueue.add(edge);
//            }
//            Set<Edge> result=new HashSet<>();
//            while(!priorityQueue.isEmpty()){ //M条边
//                Edge edge=priorityQueue.poll(); //O(logM)
//                result.add(edge);
//                //unionFind.union(edge.from,edge.to);
//            }
//        return result;
        return null;
    }
}
